package com.ygp.volatilefeatures;

/**
 * <Description> <br>
 *
 * @author linmiaolai@sanyygp.com<br>
 * @version 1.0<br>
 * @date 2021/09/14 <br>
 */
public class VolatileFeaturesExample {
//    private volatile long v = 0L;
//
//    public long getV() {
//        return v;
//    }
//
//    public void setV(long v) {
//        this.v = v;
//    }
//
//    private long getAndIncrement() {
//        v++;
//        return v;
//    }


    long vl = 0L;

    public synchronized void set(long l) {
        vl = l;
    }

    public long getAndIncrement() {
        long temp = get();
        temp += 1L;
        set(temp);
        return vl;
    }

    public synchronized long get() {
        return vl;
    }
}